package com.linzm.leetcode.primary.exercises3_20230122;

/**
 * @Author zimingl
 * @Date 2023/1/23 17:19
 * @Description: 有效的变位词
 */
public class Demo5 {
    /**
     * 给定两个字符串 s 和 t ，编写一个函数来判断它们是不是一组变位词（字母异位词）。
     * 注意：若 s 和 t 中每个字符出现的次数都相同且字符顺序不完全相同，则称 s 和 t 互为变位词（字母异位词）。
     * 输入: s = "anagram", t = "nagaram"
     * 输出: true
     */
    public static void main(String[] args) {
        Demo5 demo5 = new Demo5();
        String s = "anagram", t = "nagramf";
        boolean anagram = demo5.isAnagram(s, t);
        System.out.println(anagram);
    }

    private boolean isAnagram(String s, String t) {
        if (s.length() != t.length() || s.equals(t)) {
            return false;
        }
        // 65 97
        int[] arr = new int[128];
        int[] arr2 = new int[128];
        for (int i = 0; i < s.length(); i++) {
            arr[s.charAt(i)]++;
        }
        for (int i = 0; i < t.length(); i++) {
            arr2[t.charAt(i)]++;
        }
        for (int i = 66; i < arr.length; i++) {
            if (arr[i] != arr2[i]) {
                return false;
            }
        }
        return true;
    }
}
